02 RAG
TODO RAGのベストプラクティスドキュメントもあるらしい
RAG vs Fine-tune(必要なのは?)
例:試験
RAGは短期記憶の問題に対処する(short-term memory)
試験を与えるときに開いた本がある
fine-tuneは長期記憶の問題に対処する(long-term memory)
試験を与える前の勉強
両方合わせて使える
RAGは(定義)
Giving the model access to domain-specific content
定式化
ドキュメントの埋め込みがある(ナレッジベース)
ユーザが質問する
Combine content with prompt
code:RAGのpromptイメージ
Answer the user's question with the following content:
Question
Content
RAGがgood for=適した
新しい情報を導入して知識を更新する
制御したcontentによってハルシネーションを減らす
与えたcontextからのみ質問に回答する
適さない
broad domainの理解を埋め込めない(例:法律、医学)
新しい言語やフォーマット、スタイルをモデルに教え込めない
トークン仕様を減らせない(むしろ増える)
プロンプトエンジニアリング -> RAG
コンテキストを追加している
ここから(fine tuneで)トークン数を減らす?
サクセスストーリー
2つのナレッジベースとLLM
最初はコサイン類似度でretrieve 45%
65%になった(20イテレーション。まだ顧客に提供できない)
HyDE retrieval
偽の回答を生成する(?)
FT Embeddings
accuracyには効いたが遅いので採用しない
Chunk/embedding experiments
80%へ
Reranking
ルールベースでできる?
2つのドメインについて分類させる(ナレッジベースが2つ)
追加のメタデータ
98%
最後にプロンプトエンジニアリング
ツール(間違えた例の分析から)
数字を抜き出す場合、SQLデータベースにアクセス
Query expansion(3つの質問を1つにまとめて質問)
クエリのリストを並列に実行し1つにまとめる
これらはfine-tune前
この例で解決する必要があったのは、コンテキストの問題だった
与えていない
正しいコンテキストブロックを認識していない
cautionary tale
RAGが裏目に出る
ハルシネーションを削減したい
与えた内容から、ハルシネーションであると人間が評価したが、RAGが機能していた
code:例
User
Make sure you only use the context given to answer the user's question.
User question: What's the great tune to get pumped up to?
(盛り上がるのに最適な曲はなんですか?)
Assistant
I would recommend the legendary song, "Don't Stop Believing" by Journey. It's an iconic classic that will always get you uplifted and pumped-up.
(hallucination...?)
contentの中にあった
Title: "Don't Stop Believin': The Optimal Song to Energize Financial Analysis"
contentのエラーの指摘と思われる(LLMの誤りとは別)
評価フレームワーク Ragas score (ragas) Generation(LLMサイド)
Faithfulness
contentと照合してhallucinationがあるか
Answer relevancy
ユーザの質問と生成した回答との関連性
Retrieval(contentサイド。P-Rがある!)
Context precision
コンテンツを与えるほど、幻覚あるいは中間を忘れる
取得されたコンテントのノイズの割合
コンテンツが回答で使われているか
「コンテントブロック」ってなんだろう?
減らせるかを考える指標らしい
Context recall
回答を生成するのに必要な情報が取得できているか
対策 reranking
感想:contentのPとRを出すためには、教師データがあるのかな(しらみつぶし?)